import http from '@/plugins/axios';

/**
 * 菜单的列表分页
 * @param data 参数
 */
export function fetchMenuListPage(data: any): Promise<BaseApi.Page<Menu.MenuModel[]>> {
  // 使用 Promise 包裹异步操作
  return new Promise((resolve, reject) => {

    // 发起 HTTP 请求
    http<BaseApi.Page<Menu.MenuModel[]>>({
      url: '/system/menu/getPage',
      method: 'get',
      params: data,
    })
      .then(response => {
        // 请求成功时，返回数据
        resolve(response.data);
      })
      .catch(error => {
        // 请求失败时，捕获并抛出错误
        console.error('Login failed:', error);
        reject(error);
      });
  });
}

//修改
export function fetchUpdateMenu(data: any): Promise<string> {
  // 使用 Promise 包裹异步操作
  return new Promise((resolve, reject) => {

    // 发起 HTTP 请求
    http({
      url: '/system/menu/updateById',
      method: 'put',
      data,
    })
      .then(response => {
        // 请求成功时，返回数据
        resolve(response.data);
      })
      .catch(error => {
        // 请求失败时，捕获并抛出错误
        console.error('Login failed:', error);
        reject(error);
      });
  });
}

//保存
export function fetchSaveMenu(data: any): Promise<string> {
  // 使用 Promise 包裹异步操作
  return new Promise((resolve, reject) => {

    // 发起 HTTP 请求
    http({
      url: '/system/menu/save',
      method: 'post',
      data,
    })
      .then(response => {
        // 请求成功时，返回数据
        resolve(response.data);
      })
      .catch(error => {
        // 请求失败时，捕获并抛出错误
        console.error('Login failed:', error);
        reject(error);
      });
  });
}


//删除
export function fetchDeleteById(id: number): Promise<string> {
  // 使用 Promise 包裹异步操作
  return new Promise((resolve, reject) => {

    // 发起 HTTP 请求
    http({
      url: '/system/menu/deleteById/' + `${id}`,
      method: 'delete',
    })
      .then(response => {
        // 请求成功时，返回数据
        resolve(response.data);
      })
      .catch(error => {
        // 请求失败时，捕获并抛出错误
        console.error('Login failed:', error);
        reject(error);
      });
  });
}

//获取当前用户的菜单
export function fetchUserMenu(): Promise<Menu.MenuModel[]> {
  // 使用 Promise 包裹异步操作
  return new Promise((resolve, reject) => {

    // 发起 HTTP 请求
    http<Menu.MenuModel[]>({
      url: '/system/menu/userMenu',
      method: 'get',
    })
      .then(response => {
        // 请求成功时，返回数据
        resolve(response.data);
      })
      .catch(error => {
        // 请求失败时，捕获并抛出错误
        console.error('Login failed:', error);
        reject(error);
      });
  });
}

//获取菜单的树
export function fetchMenuTree(): Promise<Menu.MenuModel[]> {
  // 使用 Promise 包裹异步操作
  return new Promise((resolve, reject) => {

    // 发起 HTTP 请求
    http<Menu.MenuModel[]>({
      url: '/system/menu/getMenuTree',
      method: 'get',
    })
      .then(response => {
        // 请求成功时，返回数据
        resolve(response.data);
      })
      .catch(error => {
        // 请求失败时，捕获并抛出错误
        console.error('Login failed:', error);
        reject(error);
      });
  });
}
